<?php

namespace app\common\command;

use mes\Mes;
use think\console\Command;
use think\console\Input;
use think\console\input\Option;
use think\console\Output;

/**
 * 委外节点-数据初始化
 */
class OutNodeProgress extends Command
{

    protected $logName = 'OutNodeProgress';
    protected $mes = '';
    protected $isPrint = 1;    // 是否打印信息到终端

    protected function configure()
    {
        $this->setName('outNodeProgress')
            ->addOption('type', 't', Option::VALUE_OPTIONAL, '分类', '')
            ->addOption('data', 'd', Option::VALUE_OPTIONAL, '分类', '')
            ->setDescription('委外节点-数据初始化');
    }

    protected function execute(Input $input, Output $output)
    {
        set_time_limit(0);
        ini_set('memory_limit', '512M');
        error_reporting(E_ALL & ~E_NOTICE);
        $type = $input->getOption('type');
        $data = $input->getOption('data');
        switch ($type) {
            case 'taf':
                //定时查询-后整中的订单是否已经入仓就，自动完成处理
                return $this->tail_auto_finish();
                break;
            case 'check': //定时查询-自动审核，当MES入仓总数大于0，自动流转到“已审核”
                return $this->auto_check_1120();
                break;
            default:
                echo "Done" . PHP_EOL;
//                return $this->init();
                break;
        }
    }

    //一次性运行同步数据
    private function init()
    {
        $page = 1;
        for ($page = 1; $page < 1000000; $page++) {
            $where = [
                ['ft.type', '=', 1],
//                ["oot.status",'=', "null"],
            ];
            $list = db('order o')
                ->field('o.id,o.client_ordernum , oot.status')
                ->join('order_outgo oot', "o.id=oot.order_id", 'left')
                ->join('factory ft', "ft.id=o.factory_id", 'left')
                ->join('distributing ds', "o.id=ds.order_id", 'left')
                ->where($where)->page($page)->limit(10)
                ->group('o.id')
                ->select();
            if (count($list) <= 0) {
                echo "结束了一共10*{$page} 个数据" . PHP_EOL;
                return true;
            }
            foreach ($list as $k => $v) {
                if (trim($v['status']) == '') {
                    $res = (new \app\common\service\OrderOutgo())->waitDeliver_data_init($v['id'], 0);
                }
            }
        }
        echo "Done" . PHP_EOL;
        return false;
    }

    /**
     * 委外管理》进度》后整中的订单  定时查询-后整中的订单是否已经入仓就，自动完成处理
     * 1，查询 后整中的订单 是否已经入仓。
     * 2，自动 直接修改 委外进度的数据。 可能不用：按下  尾部进度》尾部完成
     * @author zhuguosen 905502314@qq.com
     * @date 2022/1/13
     */
    private function tail_auto_finish()
    {
        //1，查询 后整中的订单 是否已经入仓。
        for ($page = 1; $page < 1000000; $page++) {
            $where = [
                ['o.status', '<>', 99],//99作废
                ['o.tail_status', '=', 1],
                ["oot.status", '=', 300],
            ];
            $list = db('order o')
                ->field('o.id,o.client_ordernum ,o.tail_status, oot.status')
                ->join('order_outgo oot', "o.id=oot.order_id", 'left')
                ->where($where)->page($page)->limit(10)
                ->select();
            if (count($list) <= 0) {
                echo "结束了一共10*" . ($page - 1) . " 个数据" . PHP_EOL;
                return true;
            }
            foreach ($list as $k => $v) {
                //2，自动 直接修改 委外进度的数据。 可能不用：按下  尾部进度》尾部完成
                //尾部完成时 同步 外发厂的信息状态
                (new \app\common\service\OrderOutgo())->tail_done($v['id']);
            }
        }
        echo "Done" . PHP_EOL;
        return false;
    }

    /**
     * 自动审核，当MES入仓总数大于0，自动流转到“已审核”
     * @author zhuguosen 905502314@qq.com
     * @date 2022/4/2
     */
    private function auto_check_1120()
    {
        $orderOutgoService = new \app\common\service\OrderOutgo();
        //1，查询 后整中的订单 是否已经入仓。
        for ($page = 1; $page < 1000000; $page++) {
            $where = [
                ['o.status', '=', 2],
                ['odr.status', 'in', [1101, 1102]],
                ['odr.auto_admin_id', '=', 0],
            ];
            $list = db('order_outgo_order odr')
                ->field('odr.id,odr.order_id,odr.status,sum(sz.store_count) as sum_store_count')
                ->join('order o', "odr.order_id=o.id", 'left')
                ->join('order_size sz', "odr.order_id=sz.order_id", 'left')
                ->where($where)
                ->group('odr.order_id')
                ->page($page)->limit(10)
                ->select();
            if (count($list) <= 0) {
                echo "结束了一共10*" . ($page - 1) . " 个数据" . PHP_EOL;
                return true;
            }
            foreach ($list as $k => $v) {
                if ($v['sum_store_count'] > 0) {
                    $res = $orderOutgoService->outCheckOrder_check([
                        'ids' => [$v['id']],
                        'status' => 1120,
                        'type' => '',
                        'stall_feed_id' => 0,
                        'auto_admin_id' => 10,
                    ]);
                }
            }
        }
        echo "Done" . PHP_EOL;
        return false;
    }

}